package lzy.impl.smallspring.beans.factory;

import lzy.impl.smallspring.beans.BeansException;
import lzy.impl.smallspring.beans.factory.config.AutowirableBeanFactory;
import lzy.impl.smallspring.beans.factory.config.BeanDefinition;
import lzy.impl.smallspring.beans.factory.config.ConfigurableBeanFactory;

/**
 * 聚合接口，提供以下能力：
 * 1. 分析BeanDefinition
 * 2. 进行单例的预实例化
 */
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowirableBeanFactory, ConfigurableBeanFactory {

    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 实际上预先初始化了所有的bean
     * @throws BeansException
     */
    void preInstantiateSingletons() throws BeansException;


}
